Skip to content

feat/#669 메일 발송 결과 조회 API dev 재통합 - #686

Merged
023-dev merged 1 commit into
devfrom
feat/679-mail-dispatch-query-reapply
Sep 23, 2026
Merged

023-dev merged 1 commit into
devfrom
feat/679-mail-dispatch-query-reapply

Conversation

@023-dev

@023-dev 023-dev commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

#️⃣연관된 이슈

Closes #669

📝 작업 내용

기존 #679가 기능 브랜치에 병합되었지만 dev에 반영되지 않았던 배경에서, 최신 origin/dev 기준으로 메일 발송 결과 조회 API를 재통합했습니다.

  • 관리자별 메일 발송 작업 목록·상세·수신자 결과 조회
  • 모집 공고·작업 상태·수신자 상태 필터
  • 관리자 소유권 격리
  • QueryDSL custom Repository 적용
  • 작업 조회 content/count 쿼리 분리
  • 수신자 결과 조회 content/count 쿼리 분리
  • 작업 정렬 requestedAt DESC, id DESC
  • 수신자 결과 정렬 id ASC
  • 조회 인덱스 migration V44__add_mail_dispatch_job_query_index.sql
  • API contract: 기존 feat/#669 메일 발송 결과 조회 API 구현 #679 query parameter와 응답 구조 유지

검증

  • Java 21 focused mail·SES suite: 130 tests 통과, failures 0, errors 0
  • git diff --check 통과
  • 전체 suite는 Docker/Testcontainers 환경 때문에 로컬 검증하지 못했음
  • 실제 MySQL Flyway 검증은 CI 또는 사용 가능한 Docker 환경에서 확인 필요

🙏 리뷰 요구사항 (선택)

Summary by CodeRabbit

  • 새로운 기능

    • 관리자가 본인의 단체 메일 발송 작업 목록과 상세 정보를 조회할 수 있습니다.
    • 모집 공고, 작업 상태별 필터 및 페이지네이션을 지원합니다.
    • 발송 작업별 수신자 결과를 상태별로 조회할 수 있습니다.
    • 발송 상태, 대상·성공·실패 건수와 처리 시간 정보를 확인할 수 있습니다.
  • 보안

    • 본인에게 권한이 있는 발송 작업만 조회할 수 있습니다.
    • 인증되지 않은 사용자의 조회를 제한합니다.

@023-dev 023-dev added the ✨feature 구현, 개선 사항 관련 부분 label Sep 22, 2026
@023-dev 023-dev self-assigned this Sep 22, 2026
@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Advanced

Run ID: ebc5d452-b0f2-43c1-a157-f687caa7586f

📥 Commits

Reviewing files that changed from the base of the PR and between c2c7dea and 308f589.

📒 Files selected for processing (17)
  • src/main/java/org/ject/support/admin/mail/controller/AdminMailDispatchApiSpec.java
  • src/main/java/org/ject/support/admin/mail/controller/AdminMailDispatchController.java
  • src/main/java/org/ject/support/admin/mail/dto/MailDispatchJobResponse.java
  • src/main/java/org/ject/support/admin/mail/dto/MailDispatchJobSearchCondition.java
  • src/main/java/org/ject/support/admin/mail/dto/MailDispatchTargetResponse.java
  • src/main/java/org/ject/support/admin/mail/repository/MailDispatchJobQueryRepository.java
  • src/main/java/org/ject/support/admin/mail/repository/MailDispatchJobQueryRepositoryImpl.java
  • src/main/java/org/ject/support/admin/mail/repository/MailDispatchJobRepository.java
  • src/main/java/org/ject/support/admin/mail/repository/MailDispatchTargetQueryRepository.java
  • src/main/java/org/ject/support/admin/mail/repository/MailDispatchTargetQueryRepositoryImpl.java
  • src/main/java/org/ject/support/admin/mail/repository/MailDispatchTargetRepository.java
  • src/main/java/org/ject/support/admin/mail/service/MailDispatchQueryService.java
  • src/main/resources/db/migration/V44__add_mail_dispatch_job_query_index.sql
  • src/test/java/org/ject/support/admin/mail/controller/AdminMailDispatchControllerTest.java
  • src/test/java/org/ject/support/admin/mail/controller/AdminMailDispatchSecurityTest.java
  • src/test/java/org/ject/support/admin/mail/repository/MailDispatchRepositoryTest.java
  • src/test/java/org/ject/support/admin/mail/service/MailDispatchQueryServiceTest.java

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

관리자 메일 발송 작업 목록·상세 조회와 수신자별 결과 조회 API를 추가했습니다. 선택 필터, 페이지네이션, 관리자 소유권 검증, 응답 DTO, QueryDSL 저장소, 조회 인덱스 및 관련 테스트를 구현했습니다.

Changes

메일 발송 조회 기능

Layer / File(s) Summary
조회 계약과 응답 DTO
src/main/java/org/ject/support/admin/mail/controller/AdminMailDispatchApiSpec.java, src/main/java/org/ject/support/admin/mail/dto/*
작업 목록·상세·수신자 결과 조회 계약을 추가했습니다. 작업 및 수신자 응답 DTO와 작업 검색 조건을 정의했습니다.
페이지 조회 저장소
src/main/java/org/ject/support/admin/mail/repository/*, src/main/resources/db/migration/V44__add_mail_dispatch_job_query_index.sql, src/test/java/org/ject/support/admin/mail/repository/MailDispatchRepositoryTest.java
관리자 ID, 모집 공고 ID, 작업 상태로 작업을 조회합니다. 작업 ID와 대상 상태로 수신자를 조회합니다. 페이지 정렬, 카운트 조회, 복합 인덱스를 추가했습니다.
서비스와 관리자 엔드포인트
src/main/java/org/ject/support/admin/mail/service/MailDispatchQueryService.java, src/main/java/org/ject/support/admin/mail/controller/AdminMailDispatchController.java, src/test/java/org/ject/support/admin/mail/controller/*
세 개의 GET 엔드포인트를 추가했습니다. 조회 서비스는 작업 소유자를 확인하고, 작업이 없으면 DISPATCH_JOB_NOT_FOUND를 발생시킵니다. 인증 및 권한 테스트를 추가했습니다.
서비스 조회 검증
src/test/java/org/ject/support/admin/mail/service/MailDispatchQueryServiceTest.java
필터 조회, DTO 변환, 페이지 결과, 다른 관리자 작업 접근 차단을 검증합니다.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant 관리자
  participant AdminMailDispatchController
  participant MailDispatchQueryService
  participant MailDispatchJobRepository
  participant MailDispatchTargetRepository
  관리자->>AdminMailDispatchController: GET 조회 요청
  AdminMailDispatchController->>MailDispatchQueryService: 관리자 ID와 조회 조건 전달
  MailDispatchQueryService->>MailDispatchJobRepository: 작업 소유권 및 작업 조회
  MailDispatchQueryService->>MailDispatchTargetRepository: 대상 상태와 작업 ID로 대상 조회
  MailDispatchQueryService-->>AdminMailDispatchController: 응답 DTO 페이지 반환
  AdminMailDispatchController-->>관리자: 조회 결과 응답
Loading

Merge Risk: ⚪ Minimal · up to 308f5

The new administrator mail-dispatch read APIs are ownership-scoped and paginated, with failure responses limited to safe error codes. No merge-blocking behavior is established.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 62 functions across 16 files. (1 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 메일 발송 결과 조회 API를 dev에 재통합하는 주요 변경 사항을 명확하게 설명합니다.
Linked Issues check ✅ Passed #669의 코딩 요구사항을 충족합니다. 컨트롤러는 관리자 본인 작업의 목록·상세·수신자 결과 API를 제공합니다. 목록은 모집 공고·작업 상태 필터와 페이지네이션을 지원합니다. 조회 쿼리는 요청 시각 내림차순과 ID 보조 정렬을 사용합니다. 수신자 결과는 상태 필터, ID 오름차순, 페이지네이션을 지원합니다. MailDispatchQueryService…
Out of Scope Changes check ✅ Passed 변경 사항은 #669의 조회 API, 응답 DTO, 관리자 소유권 필터, QueryDSL 페이지 쿼리, 조회 인덱스, Swagger 계약 및 자동화 테스트에 한정됩니다. 작업 생성·실행 변경, 예약 발송, 재시도, Outbox, 복구, 메일 회수 변경은 확인되지 않습니다.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 62 functions across 16 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

당근을 든 토끼가 조회 길을 연다
작업은 최신순으로 차곡차곡 온다
대상 결과도 상태별로 모인다
다른 주인의 작업은 문 앞에 멈춘다
페이지마다 작은 답이 반짝인다
메일 기록이 안전하게 노래한다

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

Test Results

822 tests   822 ✅  20s ⏱️
110 suites    0 💤
110 files      0 ❌

Results for commit 308f589.

@github-actions

Copy link
Copy Markdown

📊테스트 커버리지

Overall Project 89.98% -0.06% 🍏
Files changed 97.17% 🍏

File Coverage
MailDispatchJobQueryRepositoryImpl.java 99.22% -0.78% 🍏
MailDispatchTargetQueryRepositoryImpl.java 98.89% -1.11% 🍏
MailDispatchQueryService.java 90.77% -9.23% 🍏

@023-dev

023-dev commented Sep 23, 2026

Copy link
Copy Markdown
Member Author

이전과 동일한 PR 내용이라 셀프 머지 하겠습니다!

@023-dev
023-dev merged commit fa40c94 into dev Sep 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨feature 구현, 개선 사항 관련 부분

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 메일 발송 작업 및 수신자별 결과 조회 API

1 participant